feat(manipulation): add VAMP planner backend#2522
Conversation
Codecov Report❌ Patch coverage is @@ Coverage Diff @@
## main #2522 +/- ##
==========================================
+ Coverage 69.97% 70.10% +0.13%
==========================================
Files 842 853 +11
Lines 74420 75132 +712
Branches 6668 6717 +49
==========================================
+ Hits 52077 52673 +596
- Misses 20636 20728 +92
- Partials 1707 1731 +24
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 2 files with indirect coverage changes 🚀 New features to boost your workflow:
|
Co-authored-by: cc <55869557+TomCC7@users.noreply.github.com>
Greptile SummaryThis PR adds an optional VAMP planner backend for joint-space motion planning, alongside a mock-control Franka Panda catalog entry and
Confidence Score: 4/5Safe to merge with one fix in loader.py's file-based custom artifact path. The file-based custom artifact loader adds the module to sys.modules before exec_module completes. If loading fails, the broken module object is permanently cached under the file's stem name. Any subsequent attempt to load that same stem — even after fixing the artifact — silently returns the broken object for the remainder of the process. This affects anyone using the CustomVampArtifactConfig file path variant; the official robot path is unaffected. The rest of the implementation is well-structured: lazy imports are correctly deferred, the previous truncation and sys.path cleanup issues are resolved, and the typed config/validation stack is clean. dimos/manipulation/planning/vamp/loader.py — the file-based custom artifact branch needs a try/except around exec_module to remove the broken entry from sys.modules on failure. Important Files Changed
Reviews (2): Last reviewed commit: "fix(manipulation): address Greptile VAMP..." | Re-trigger Greptile |
| vamp = [ | ||
| # Optional VAMP planning backend. Keep out of broad extras to avoid forcing | ||
| # native planner bindings into non-VAMP manipulation environments. | ||
| "vamp-planner @ git+https://github.com/TomCC7/vamp.git@2b59552179c2af473c59c8617519e4663497fbe6", |
There was a problem hiding this comment.
You cannot add git urls in dependencies because we can't publish that to PyPI. PyPI only allows dependencies for other packages on PyPI.
There was a problem hiding this comment.
we should publish this package as well if we decide to support this planner, @mustafab0 's call
There was a problem hiding this comment.
then I guess the same thing for roboplan, but for that I contacted the maintainer: open-planning/roboplan#247
| @@ -0,0 +1,53 @@ | |||
| # Copyright 2025-2026 Dimensional Inc. | |||
There was a problem hiding this comment.
Please remove this file and add another bullet point to the skill to not add tests for blueprint values (blueprints are configs, not functionality).
Problem
DimOS manipulation planning is currently centered on the Drake world plus RRT-Connect stack. We need an optional VAMP backend for fast joint-space planning, plus a mock-control Franka Panda target for testing and future benchmarking against an official VAMP robot.
Closes N/A
Solution
VampWorldloads official or user-prepared artifacts, handles native validity/FK/environment conversion, and reports unsupported capabilities clearly.VampPlannerhandles VAMP algorithm selection, joint-space planning, optional simplification, and path validation.panda-coordinatorblueprint for planning tests/benchmarks.Design notes:
vamp-planneris optional and lazy-imported behind the newvampextra.How to Test
uv run pytest dimos/robot/manipulators/franka/test_blueprints.py dimos/robot/catalog/test_franka.py dimos/manipulation/test_manipulation_unit.py dimos/manipulation/planning/vamp/test_vamp_backend.py -q CI=1 uv run pytest dimos/robot/test_all_blueprints_generation.py -q uv run doclinks --root . --check docs/usage/manipulation_planning.md docs/usage/README.md openspec validate add-vamp-planning-backendManual mock Panda/VAMP smoke path:
Contributor License Agreement